package com.zk.algorithm.array;

import com.zk.algorithm.annotation.*;

import java.util.Arrays;

/**
 * 数组排成最大的数，牛客网第 33 题
 *
 * @author zk
 */
@Microsoft
@Hard
@LeetCode("179")
@LeetCodeExplore
public class LargestNumber {

    public String largestNumber(int[] nums) {
        String[] arr = new String[nums.length];
        boolean allZero = true;

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                allZero = false;
            }

            arr[i] = String.valueOf(nums[i]);
        }

        if (allZero) {
            return "0";
        }

        Arrays.sort(arr, (a, b) -> (b + a).compareTo(a + b));

        // =======================
        //       BUG (不是返回第一个)
        //        ↓
        // =======================
        // return arr[0];
        //
        // 而是返回最终的串起来的
        return String.join("", arr);
    }

}
